package com.hhh.springai_test.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 通用响应类，用于封装API响应数据
 * @param <T> 响应数据的类型
 */
@Data
@NoArgsConstructor
public class BaseResponse<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 响应码，表示响应的状态
     */
    private Integer code;

    /**
     * 响应数据，具体的数据内容
     */
    private T data;

    /**
     * 响应消息，描述响应的状态信息
     */
    private String message;

    /**
     * 构造方法，用于创建带有响应码、数据和消息的响应对象
     * @param code 响应码
     * @param data 响应数据
     * @param message 响应消息
     */
    public BaseResponse(Integer code, T data, String message) {
        this.code = code;
        this.data = data;
        this.message = message;
    }

    /**
     * 构造方法，用于创建带有响应码和数据的响应对象，消息默认为空字符串
     * @param code 响应码
     * @param data 响应数据
     */
    public BaseResponse(int code,T data){
        this(code,data,"");
    }

    /**
     * 构造方法，用于根据错误码创建响应对象，数据为null，消息为错误码对应的消息
     * @param errorCode 错误码对象，包含响应码和消息
     */
    public BaseResponse(ErrorCode errorCode){
        this(errorCode.getCode(),null,errorCode.getMessage());
    }

}

